//* ==========================================================================
// Classe : Donnees 
// Fonctions : Classe  de fonctions d'acces aux bases de données, tables et données 
// 
// License:  License LGPL 
// Version :  0.01    du 13/07/2008 
// Lien : http://outils.codeplex.com 
// Auteur(s) : JF. PACORY
// CopyLeft: CopyLeft (>) 2008-2009 GlopSoft <contact@glopsoft.com>
// Création : 06/20/2009 17:57:10
// Etat : en cours
// Controle du :
// Licence : 
// L'autorisation est accordée, à titre gratuit, à toute personne d'obtenir une copie 
// de ce logiciel et de ses fichiers de documentation, pour pouvoir utiliser 
//ce logiciel sans restriction, y compris, sans s'y limiter, les droits 
// d'utiliser, de copier, de modifier, de fusionner, de publier, de distribuer, 
// de sous-licence, et / ou de vendre les copies du Logiciel, et d'autoriser les 
// personnes auxquelles le logiciel est livré de le faire, sous réserve des 
// conditions suivantes:
// 
// Les avis de droit d'auteur et la présente autorisation doivent être inclus dans 
// toutes les copies ou parties substantielles du Logiciel.
// 
// LE LOGICIEL EST FOURNI "TEL QUEL", SANS GARANTIE DE QUELQUE NATURE QUE CE SOIT, 
// EXPLICITE OU  IMPLICITE, Y COMPRIS, MAIS SANS Y LIMITER LES GARANTIES DE QUALITE 
// MARCHANDE, D'ADEQUATION A UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN 
// AUCUN CAS LES AUTEURS OU LES TITULAIRES DE DROITS D'AUTEUR POURRONT ETRE TENUE 
// RESPONSABLES DE TOUT DOMMAGE,  RÉCLAMATION OU AUTRE  RESPONSABILITE, DANS LE 
// CADRE D'UNE ACTION DE CONTRAT, UN DELIT OU AUTRE, DÉCOULANT DE, OU EN RELATION 
// AVEC LE LOGICIEL OU DE SON UTILISATION OU AUTRES EN RELATION AVEC LE LOGICIEL.
// Licence LGPL : http://commonlibrarynet.codeplex.com/license 
//*---------------------------------------------------------------------------
//
//* ==========================================================================

#region Références

using System;
using System.Data;
using System.Data.Common;
using System.Diagnostics;

#endregion

namespace Outils.Donnees
{
    /// <summary>
    /// Classe  de fonctions d'acces aux bases de données, tables et données 
    /// </summary>
    public class Donnee
    {
        /// <summary>
        /// Liste des moteurs possibles
        /// </summary>
        public enum MoteursSql
        {
            /// <summary>
            /// SQLEXPRESS
            /// </summary>
            SqlExpress,
            /// <summary>
            /// SQLSERVER
            /// </summary>
            SqlServer,
            /// <summary>
            /// MYSQL
            /// </summary>
            Mysql,
            /// <summary>
            /// SQLLITE
            /// </summary>
            SqlLite,
            /// <summary>
            /// ACCESS
            /// </summary>
            Access
        };

        /// <summary>
        /// Constructeur
        /// </summary>
        public Donnee()
        {
        }

        // ===================================================
        // Fonctions SQL Server / Express
        // ===================================================

        #region Retourne une chaine de connexion sql/sqlExpress : RetourneChaineConnexion

        /// <summary>
        /// Retourne une chaine de connexion selon la base de données
        /// </summary>
        /// <param name="MoteurSQL">Moteur SQL</param>
        /// <param name="Connecteur">Connecteur</param>
        /// <param name="Base">Base</param>
        /// <param name="Utilisateur">Utilisateur</param>
        /// <param name="MotPasse">Motde passe</param>
        /// <returns>Chaîne de connexion</returns>
        public static string RetourneChaineConnexion(MoteursSql moteurSql, string connecteur, string uneBase, string utilisateur, string motPasse)
        {
            // crée un objet  DbConnctionStringBuilder, et ajoute les paramètres
            DbConnectionStringBuilder constructeur = new DbConnectionStringBuilder();

            if (moteurSql == MoteursSql.SqlExpress)
            {
                //constructeur.Add( "WorkStation Id", "JFP" );
                constructeur.Add("Packet Size", "4096");
                constructeur.Add("Data Source", connecteur);
                constructeur.Add("Initial Catalog", uneBase);
                constructeur.Add("User ID", utilisateur);
                constructeur.Add("Password", motPasse);
                constructeur.Add("Trusted_Connection", "False");
                constructeur.Add("Persist Security info", "False");
                constructeur.Add("Integrated Security", "SSPI");
            }
            else
                if (moteurSql == MoteursSql.SqlServer)
                {
                    constructeur.Add("Data Source", "(local)");
                    constructeur.Add("Initial Catalog", uneBase);
                    constructeur.Add("Integrated Security", "SSPI");
                }
                else
                    if (moteurSql == MoteursSql.Access)
                    {
                    }
                    else
                        if (moteurSql == MoteursSql.Mysql)
                        {
                        }
                        else
                            if (moteurSql == MoteursSql.SqlLite)
                            {
                            }

            Debug.WriteLine(constructeur.ConnectionString);

            return constructeur.ConnectionString;
        }

        #endregion
    }
}


